#include<iostream>
#include<future>
#include<unistd.h>
int Add(int x,int y)
{
    std::cout<<"in add"<<std::endl;
    return x+y;
}
int main()
{
    //:async一个模板函数用来封装一个函数（task）然后返回一个future对象
    //封装之后函数内部创建一个线程去执行task，task的返回值通过函数返回的future对象获取
    //std::launch::async异步策略，立马创建线程执行task
    //std::launch::deferred 同步策略future对象不获取task返回结果就不会创建线程执行task
    std::future<int> f=std::async(std::launch::deferred,Add,11,22);
    sleep(2);
    std::cout<<"----------------------"<<std::endl;
    std::cout<<f.get()<<std::endl;
    return 0;
}